# VSCode 使用 Volar 接管模式代替 TS Plugin

原文:Use Take Over Mode instead of TS Plugin #471 (opens new window)

使用 VSCode + Volar 开发 Vue3 + typescript 项目时,可以使用接管模式代替 TS Plugin 。

# 什么是接管模式

过去,我们为 TS 和 Vue 探索了多种语言支持模式,有:

  • Vetur Mode: 为 Vue + TS 语言支持提供不同的扩展插件。
  • VueDX Mode: 由 TS Plugin 实现,Vue + TS 语言支持也由 VSCode 内置的 TypeScript 扩展插件提供。
  • Volar Mode: 类似于 Vetur,但额外使用 TS Plugin 来弥补 TS 语言支持。

Volar Mode 存在什么问题?

  • 对于每个 TS 项目,VS Code 内置的 TypeScript 扩展和 Volar 创建了 2 个语言服务实例,TS Plugin 代理程序也有额外的内置 TS 扩展的语言服务实例,最后我们为每个 TS 项目创建了 6 个语言服务实例。理论上,内存和CPU的使用率分别为200% ~ 300%。
  • 由于 VSCode 不支持 TS 插件启用设置,您必须在每次更新 Volar 时重新启用TS插件。

接管模式是怎么解决 Volar 的问题的?

  • 接管模式不使用 VSCode 内置的 TypeScript 扩展,只使用 Vue 语言服务器来提供 Vue + TS 语言支持。所以我们只有 2 个语言服务实例。
  • 这种方法没有侵入,我们不再需要在每次更新扩展后为 TS Plugin 重新加载 VSCode。

# 如何启用/禁用接管模式

  • Volar 版本需要大于 0.27.17
  • 禁用 VSCode 内置的 TypeScript 插件:左侧 Extensions 菜单,在过滤图标中选择 Built-in, 在 FEATURES 中找到 TypeScript and JavaScript Language Features 右键选择 Disable (Workspace)。
  • 如需禁用接管模式,找到上一步的内置扩展 TypeScript and JavaScript Language Features 右键选择 Enable (Workspace) 即可。

# 接管模式的限制

Vue 语言服务器试图提供所有内置的 TS 扩展功能,但总会有一些功能落后、缺失或 bug。但都在逐步解决和更新,应用开发者基本可以放心使用,相关详情可查看原文。